package org.palmelf.monitor;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

/**
 * 剪切所有的文件夹下的文件到另一个文件夹中
 * 
 * @author caizh
 * 
 */
public class SearchAllFolder {
	/**
	 * 剪切文件夹下的文件到指定目录
	 * 
	 * @param rootFolderPath
	 *            原文件夹路径
	 * @param newRootFile
	 *            目标文件夹路径
	 */
	public static void SearchFile(String oldFolder, String newFolder) {
		int bytesum = 0;
		int byteread = 0;
		byte[] buffer = new byte[1444];
		
		File oldFile = new File(oldFolder); //原文件夹
		File newFile = new File(newFolder); // 目标文件夹
		InputStream inStream = null;  //写入流
		FileOutputStream fs = null;	//输出流
		if (!newFile.exists()) { // 如果存入的目标文件夹不存在，就创建一个文件夹
			newFile.mkdir();
		}
		
		if(oldFile.isDirectory()){ //TODO 获取文件夹下的文件
			int oldNum = oldFile.list().length;
			for (int i = 0; i < oldNum; i++) {
				SearchFile(oldFile+"/"+oldFile.list()[i],newFolder);
			}
		}
		
		if(!oldFile.isDirectory()){ //TODO 如果是文件而不是文件夹就进行文件的剪切操作
			// TODO 得到文件名称
			String rootFilePath = oldFolder.substring( 
					oldFolder.lastIndexOf("/") + 1, oldFolder.length());
	
			try {
				inStream = new FileInputStream(oldFolder); // 读入文件
				fs = new FileOutputStream(newFolder + "/"+ rootFilePath); 
				while ((byteread = inStream.read(buffer)) != -1) { // 写出文件
					bytesum += byteread; // 字节数 文件大小
					fs.write(buffer, 0, byteread);
				}
				inStream.close();  
				fs.flush();
				fs.close();
				oldFile.delete(); // TODO 删除文件
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * 删除指定文件夹里的所有文件夹
	 * 如果文件夹下有图片则不删除该文件所在的文件夹
	 * 
	 * @param folder
	 *            文件夹路径
	 */
	public static boolean deleteFolder(String delpath,boolean flag) throws FileNotFoundException {
		File file = new File(delpath);
		// 当且仅当此抽象路径名表示的文件存在且是一个目录时，返回 true
		if (!file.isDirectory()) {
			file.delete();
		} else if (file.isDirectory()) {
			String[] filelist = file.list();
			for (int i = 0; i < filelist.length; i++) {
				File delfile = new File(delpath + "/" + filelist[i]);
				if (delfile.isDirectory()) {
					deleteFolder(delpath + "/" + filelist[i],flag);
					if(delfile.delete()){
						System.out.println("删除文件夹成功:"+delpath + "/" + filelist[i]);
					} 
				}else if (!delfile.isDirectory()) {
					deleteFolder(delpath + "/" + filelist[i],flag);
					delfile.delete();
					System.out.println("删除文件成功:"+delpath + "/" + filelist[i]);
				}
			}
//			file.delete();
		}
		return true;
	}
}
